      ***
      * IDENTIFICACION DEL PROGRAMA
      ***
       IDENTIFICATION DIVISION.
       PROGRAM-ID. SUBRUTINACLIENTE.
       AUTHOR. Federico Caseres. Ezequiel De Luca. Daniel Mantese. Gabriel Ros. Julian DAmbrosio. 
      ***
      * DIVISION DE ENTORNO
      * 
      ***
       ENVIRONMENT DIVISION.
       INPUT-OUTPUT SECTION.
       FILE-CONTROL.
            SELECT CLIENTES ASSIGN TO DISK "CLIENTES.DAT"
           		ACCESS MODE IS RANDOM ORGANIZATION IS INDEXED
           		ALTERNATE RECORD KEY IS CLAVE-CLIENTE-ALT
           		RECORD KEY IS CLAVE-CLIENTE-PRI
           		FILE STATUS IS FS-CLIENTES.
           
      ***
      * DIVISION DE DATOS
      ***
       DATA DIVISION.
       FILE SECTION.

       FD CLIENTES LABEL RECORD IS STANDARD.
       01 REG-CLIENTE.
           03 CLAVE-CLIENTE-PRI.
               05 CLI-NUMERO PIC X(8).
           03 CLI-FEC-ALTA PIC 9(8).
           03 CLI-TELEFONO PIC X(20).
           03 CLI-DIRECCION PIC X(30).
           03 CLAVE-CLIENTE-ALT.
               05 CLI-DOCUMENTO PIC X(20).

       WORKING-STORAGE SECTION.
       01 FS-CLIENTES PIC X(2) VALUE SPACES.

       LINKAGE SECTION.
       01 PARAMETRO-CLIENTE.
          03 PARAM-OP PIC X(1).
          03 PARAM-CLAVES-CLIENTE.
             05 PARAM-NUMERO-CLIENTE PIC X(8).
             05 PARAM-DOCUMENTO-CLIENTE PIC X(20).
          03 RESULTADO.
             05 RESULTADO-CLI-NRO PIC X(8).             
             05 RESULTADO-CLI-FEC-ALTA PIC 9(8).
             05 RESULTADO-CLI-TELEFONO PIC X(20).
             05 RESULTADO-CLI-DIRECCION PIC X(30).
			 05 RESULTADO-CLI-DOC PIC X(20).
      ***
      * DIVISION DEL PROGRAMA
      ***
       PROCEDURE DIVISION USING PARAMETRO-CLIENTE.	 
	   
        PROGRAMA.
		   PERFORM VALIDAR-PARAM-OP.
           IF PARAM-OP EQUAL "O" THEN
               OPEN I-O CLIENTES
			   IF(FS-CLIENTES NOT = "00") THEN
			   DISPLAY "Error Abrir Clientes".
		   IF PARAM-OP EQUAL "C" THEN
			   CLOSE CLIENTES
			   IF(FS-CLIENTES NOT =  "00") THEN
			       DISPLAY "Error Cerrar Clientes".
		   IF (PARAM-OP EQUAL "P" OR PARAM-OP EQUAL "A")
		   THEN
             PERFORM LEER-CLIENTE.
           PERFORM SALIR.	   
		   
		 VALIDAR-PARAM-OP.
           IF (PARAM-OP   NOT EQUAL 'C'
             AND PARAM-OP  NOT EQUAL 'O'
             AND PARAM-OP  NOT EQUAL 'P'
             AND PARAM-OP  NOT EQUAL 'A')
               THEN 
			   PERFORM MSJ-PARAM-OP-INVALIDO.	
			   
	     MSJ-PARAM-OP-INVALIDO.		   
		   DISPLAY "El parametro OP es invalido".
	       DISPLAY "Los valores posibles son:".
		   DISPLAY "O Permite abrir el archivo.".
		   DISPLAY "C Permite cerrar el archivo.".
		   DISPLAY "P Buscar por su clave primaria.".
		   DISPLAY "A Buscar por su clave alternativa.".	
		   
         LEER-CLIENTE.
           IF PARAM-OP EQUAL "P" 
		   THEN
              MOVE PARAM-NUMERO-CLIENTE TO CLI-NUMERO
              READ CLIENTES END-READ
		   ELSE
              MOVE PARAM-DOCUMENTO-CLIENTE TO CLI-DOCUMENTO
              READ CLIENTES KEY IS CLI-DOCUMENTO END-READ.
		   PERFORM VERIFICAR-FS-CLIENTES.
		   
		 VERIFICAR-FS-CLIENTES.
		   IF(FS-CLIENTES = "00") 
		   THEN
			  PERFORM ENCONTRADO 
		   ELSE
			  PERFORM NO-ENCONTRADO.	
			  
         ENCONTRADO.
	         MOVE CLI-NUMERO TO RESULTADO-CLI-NRO.            
             MOVE CLI-FEC-ALTA TO RESULTADO-CLI-FEC-ALTA.
             MOVE CLI-TELEFONO TO RESULTADO-CLI-TELEFONO.
             MOVE CLI-DIRECCION TO RESULTADO-CLI-DIRECCION.
			 MOVE CLI-DOCUMENTO TO RESULTADO-CLI-DOC.
			 
         NO-ENCONTRADO.
           DISPLAY "El cliente con numero de documento:"
		   DISPLAY PARAM-DOCUMENTO-CLIENTE
		   DISPLAY "No se encuentra en el archivo".
		   
         SALIR.
           GOBACK.
